/*
 * GaseousSolution.h
 *
 *  Created on: 28 May 2011
 *      Author: allan
 */

#ifndef GASEOUSSOLUTION_H_
#define GASEOUSSOLUTION_H_

// GeoReact includes
#include "Solution.h"
#include "Utils.h"

class GaseousSolution : public Solution
{
public:
	GaseousSolution();
	
	explicit GaseousSolution(const vector<string>& species);
	
	virtual ~GaseousSolution();
	
	virtual const string
	GetName() const;
	
	virtual const vector<string>
	GetSpecies() const;
	
	virtual const VectorXd
	MolarFractions(const VectorXd& n) const;
	
	virtual const VectorXd
	Concentrations(const VectorXd& n) const;
	
	virtual const VectorXd
	ActivityCoefficients(double T, double P, const VectorXd& n) const;
	
	virtual const VectorXd
	Activities(double T, double P, const VectorXd& n) const;
	
	const VectorXd
	FugacityCoefficients(double T, double P, const VectorXd& n) const;
	
	const VectorXd
	Fugacities(double T, double P, const VectorXd& n) const;
	
private:
	/// The species in the gaseous solution
	vector<string> species;
};

#endif /* GASEOUSSOLUTION_H_ */
